#pragma once

#include <vector>
#include <map>
#include "IResource.h"
#include "Pointer.h"
#include "HashedString.h"
#include "Mesh.h"
//#include "Skeleton.h"

class Model : public IResource
{
public:
	static const HashedString type;

	typedef std::vector<Model> Vector_t;
	typedef std::map<const HashedString, Pointer<Model>> Map_t;
	typedef std::pair<const HashedString, Pointer<Model>> Pair_t;

	Mesh::Vector_t& getMeshes();
	// BindingNodes? getBindingNodes();
	// ParticleSystems;
	// Pointer<Skeleton>& getSkeleton();
	virtual const HashedString& Type();
	virtual bool ToXML( tinyxml2::XMLPrinter& print );
	const HashedString& getResourceType() const;
protected:
	Mesh::Vector_t m_meshes;
	HashedString::Vector_t m_particleSystems;
//	Pointer<Skeleton> m_skeleton;
};
